#!/bin/bash

# SSL 证书配置脚本 - Ubuntu 24.04
# 用法: ./setup-ssl-ubuntu.sh yourdomain.com

DOMAIN="$1"

if [ -z "$DOMAIN" ]; then
    echo "用法: ./setup-ssl-ubuntu.sh yourdomain.com"
    echo "示例: ./setup-ssl-ubuntu.sh notes.example.com"
    exit 1
fi

# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'

echo -e "${YELLOW}为域名 $DOMAIN 配置 SSL 证书...${NC}"

# 检查域名解析
echo -e "${YELLOW}检查域名解析...${NC}"
if ! nslookup $DOMAIN > /dev/null 2>&1; then
    echo -e "${RED}域名 $DOMAIN 无法解析，请检查 DNS 配置${NC}"
    exit 1
fi

# 更新 Nginx 配置中的域名
echo -e "${YELLOW}更新 Nginx 配置...${NC}"
sudo sed -i "s/server_name _;/server_name $DOMAIN www.$DOMAIN;/" /etc/nginx/sites-available/web-notes

# 测试 Nginx 配置
sudo nginx -t
if [ $? -ne 0 ]; then
    echo -e "${RED}Nginx 配置测试失败${NC}"
    exit 1
fi

# 重启 Nginx
sudo systemctl reload nginx

# 检查 Certbot 是否安装
if ! command -v certbot &> /dev/null; then
    echo -e "${YELLOW}安装 Certbot...${NC}"
    sudo apt update
    sudo apt install -y certbot python3-certbot-nginx
fi

# 申请 SSL 证书
echo -e "${YELLOW}申请 SSL 证书...${NC}"
sudo certbot --nginx -d $DOMAIN -d www.$DOMAIN --non-interactive --agree-tos --email admin@$DOMAIN

if [ $? -eq 0 ]; then
    echo -e "${GREEN}SSL 证书申请成功！${NC}"
    
    # 设置自动续期
    echo -e "${YELLOW}设置证书自动续期...${NC}"
    (crontab -l 2>/dev/null; echo "0 12 * * * /usr/bin/certbot renew --quiet") | crontab -
    
    echo -e "${GREEN}SSL 证书配置完成！${NC}"
    echo -e "\n访问地址:"
    echo -e "HTTPS: ${GREEN}https://$DOMAIN${NC}"
    echo -e "HTTPS: ${GREEN}https://www.$DOMAIN${NC}"
    
    echo -e "\n证书信息:"
    sudo certbot certificates
    
else
    echo -e "${RED}SSL 证书申请失败${NC}"
    echo -e "${YELLOW}请检查:${NC}"
    echo -e "1. 域名 DNS 是否正确指向服务器"
    echo -e "2. 防火墙是否开放 80 和 443 端口"
    echo -e "3. Nginx 是否正常运行"
    exit 1
fi